/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package modelo.DAO;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.Serializable;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import modelo.HojaDeVida;
import modelo.conexion.Conexion;

/**
 *
 * @author Carlos Jose Mendoza
 */
public class HojaDeVidaDao implements Serializable {
    
    private PreparedStatement pre = null;
    private Connection con = null;
        Conexion co = new Conexion();
        
    public boolean guardar (HojaDeVida objHojaVida){
        boolean estado = false;
        String ruta = "C:/Users/Carlos Jose Mendoza/Desktop/" + objHojaVida.getFoto();
        
        String sql ="insert into hojasDeVidas (identificadorHojaDeVida, codigoAspirante, foto, descripcionPerfilLaboral, programa) values (?,?,?,?,?)";
        
        try {
            File archivo = new File(ruta);
            FileInputStream entrada = new FileInputStream(archivo);
            
            con= co.conectar();
            Statement est = con.createStatement();
            pre = con.prepareStatement(sql);
            pre.setInt(1, 1234);
            pre.setInt(2, objHojaVida.getCodigoAspirante());
            pre.setBinaryStream(3, entrada , (int)archivo.length());
            pre.setString(4,objHojaVida.getDescripcionPerfil());
            pre.setString(5,objHojaVida.getPrograma());
            
            pre.executeUpdate();
            estado = true;
        } catch (Exception ex) {
            estado = false;
             throw new ExceptionInInitializerError(ex.getMessage());
        }
     
        return estado;
    }
    
    public byte[] obtenerImagen (int codigo){
        byte[] buffer =null;
            String sql="select foto from hojasDeVidas where codigoAspirante="+codigo+"";
        try {
            pre = con.prepareStatement(sql);
            ResultSet rs = pre.executeQuery();
            while(rs.next()){
                Blob bin = rs.getBlob("foto");
                
                if(bin!=null){
                    InputStream insp = bin.getBinaryStream();
                    int size =  (int) bin.length();
                    buffer = new byte [size];
                }
            }
            pre.close();
        }catch(Exception ex){
            throw new ExceptionInInitializerError(ex.getMessage());
        }
        return buffer;
    }
    
    public HojaDeVida buscar(String codigo){
        HojaDeVida hv = new HojaDeVida();
        String sql ="select foto, descripcionPerfilLaboral, programa from hojasDeVidas where codigoAspirante="+codigo+"";
        try {
            pre = con.prepareStatement(sql);
            ResultSet re = pre.executeQuery();
            if(re.next()){
                hv.setImagen(re.getBinaryStream("foto"));
                hv.setDescripcionPerfil(re.getString("descripcionPerfilLaboral"));
                hv.setPrograma(re.getString("programa"));
            }
        } catch (SQLException ex) {
          throw new ExceptionInInitializerError(ex.getMessage());
        }
        return hv;
    }
    
    
    
    
}
